/**
 * 
 */
package aladyn.interfaces;

import java.util.StringTokenizer;

/**
 * L'interface de sérialisation
 * @author YiHan Wang, Qi Xu, Bo CAI
 */
public interface LRSerializable {
	/**
	 * Sérialiser l'objet
	 * @return L'objet sérialisé
	 */
	String serialize();
	
	/**
	 * Désérialiser l'objet à partir d'un chaine de caractères
	 * Dans cette méthode, on transforme la chaine de caractères serialized en StringTokenizer
	 * puis appeler "Object deserialize(StringTokenizer tokenizer);"
	 * @param serialized L'objet sérialisé
	 * @return L'objet déserialisé
	 */
	Object deserialize(String serialized);
	
	/**
	 * Désérialiser l'objet à partir d'un chaine de caractères
	 * Dans cette méthode, on extrait directement les champs de l'objet,
	 * Cette méthode ne doit pas être appelé si on est pas sur du type de l'objet 
	 * @param type Le type de l'objet sérialisé
	 * @param tokenizer L'objet sérialisé(le type de l'objet a déjà été extrait)
	 * @return L'objet déserialisé
	 */
	Object deserialize(String type, StringTokenizer tokenizer);
}
